#ifndef TEXTTABLEMODEL_H
#define TEXTTABLEMODEL_H

#include <QAbstractTableModel>
#include <QStringList>
#include <QBrush>

#include "stringtable.h"

class TextTableModel : public QAbstractTableModel
{
Q_OBJECT

public:
    //reimplemented
    explicit TextTableModel(QObject *parent = 0);
    int rowCount(const QModelIndex &parent = QModelIndex()) const;
    int columnCount (const QModelIndex &parent = QModelIndex()) const;
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
    Qt::ItemFlags flags(const QModelIndex &index) const;

    bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
    bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());

    bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex());
    bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex());

    void setText(const StringTable &text);
    const StringTable& text() const;
    
    void setHorizontalHeaderLabels(const QStringList &labels);

public slots:
    void normalize();
    void filter(QString str, const QModelIndexList &list);

private:
    StringTable m_text;
    QStringList m_horizontalLables;
    QList<QBrush> m_rowColors;
};

#endif // TEXTTABLEMODEL_H
